home *** CD-ROM | disk | FTP | other *** search
/ BBS Toolkit / BBS Toolkit.iso / doors_2 / pb_116.zip / SDK.ZIP / TEXTSRCH.C < prev    next >
C/C++ Source or Header  |  1991-09-21  |  2KB  |  133 lines

  1. #include "pb_sdk.h"
  2.  
  3. bool
  4. find_string(char *search)
  5. {
  6.  int slen;
  7.  FILE *fp = fopen("MSGTMP","rt");
  8.  if(!fp) return FALSE;
  9.  
  10.  slen = strlen(search);
  11.  
  12.  for(;;)
  13.    {
  14.     char s[100];
  15.     int i,l;
  16.  
  17.     if(fgets(s,99,fp) == NULL) break;
  18.  
  19.     l = strlen(s);
  20.  
  21.     for(i=0;i<=l-slen;i++)
  22.       if(!memicmp(&s[i],search,slen))
  23.         {
  24.          fclose(fp);
  25.          return TRUE;
  26.         }
  27.    }
  28.  
  29.  fclose(fp);
  30.  
  31.  return FALSE;
  32. }
  33.  
  34. void
  35. showbusy()
  36. {
  37.  static int x = 0;
  38.  static char s[] = "|\\-/";
  39.  
  40.  putchar('\b');
  41.  putchar(s[x]);
  42.  
  43.  x = ++x % 4;
  44. }
  45.  
  46.  
  47. main(int argc,char *argv[])
  48. {
  49.  int i,result;
  50.  MESSAGE msg;
  51.  MSGAREA ma;
  52.  char search[30];
  53.  int area = CurUser->lastmsgarea;
  54.  
  55.  if(argc > 1) area = atoi(argv[1]);
  56.  
  57.  if(area)
  58.    {
  59.     if(ReadMsgArea(area,&ma)<0) return 0;
  60.    }
  61.  else
  62.    {
  63.     strcpy(ma.name,"Combined Boards");
  64.    }
  65.  
  66.  printf("\n\f\n\6Text Search (\3%s\6)\n"
  67.               "\7───────────\n\n",ma.name);
  68.  
  69.  printf("\7Search string: \3");
  70.  Input(search,29,INPUT_UPALL);
  71.  
  72.  if(search[0] == '\0') return 0;
  73.  
  74.  UnMarkAllMessages();
  75.  
  76.  printf("\n\n\7Press [\3S\7] to abort search. Searching for '\3%s\7'...\6  ",search);
  77.  
  78.  result = FirstMessage(&msg,area,1,1);
  79.  
  80.  for(i=0;result>=1;)
  81.    {
  82.     showbusy();
  83.  
  84.     CreateMessageText(&msg);
  85.  
  86.     if(toupper(PeekChar()) == 'S') break;
  87.  
  88.     if(find_string(search))
  89.       {
  90.        MarkMessage(msg.msgnum);
  91.  
  92.        i++;
  93.       }
  94.  
  95.     result = NextMessage(&msg,area,1);
  96.    }
  97.  
  98.  if(i)
  99.    {
  100.     char c;
  101.  
  102.     printf("\n\n\3%d \7messages with matching text found & marked.\n\n",i);
  103.  
  104.     for(;;)
  105.       {
  106.        printf("\7Action? \6[\3R\6]ead - [\3L\6]ist - [\3Q\6]uit\7 : ");
  107.  
  108.        c = WaitKeys("RLQ\r");
  109.  
  110.        putchar(c);
  111.        putchar('\n');
  112.  
  113.        if(c == 'Q') break;
  114.        if(c == 'R')
  115.          {
  116.           ReadMarkedMessages();
  117.           break;
  118.          }
  119.        if(c == 'L')
  120.          {
  121.           ListMarkedMessages();
  122.          }
  123.  
  124.        putchar('\n');
  125.       }
  126.    }
  127.   else puts("\n\n\6No messages found. \7Press \3[Enter]\7 to continue.\t");
  128.  
  129.   return 0;
  130. }
  131.  
  132.  
  133.